﻿Public Class frmExamensINS
    Public pDate As Date
    Public pNo_exa As Integer
    Public pAgence As Integer
    Public pNoInscrit As Integer 
    Public pTypeExam As String
    Public pDispo As Integer

    Private szSQL As String
    Private rs As ADODB.Recordset

    Private Sub frmExamensINS_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        InitComboFilieres(CB_FILIERE)
        InscritToScreen()

    End Sub

    Private Function IsEleveOK() As Boolean

        IsEleveOK = False
        If TE_CD_CLI.TextLength = 0 Then
            Exit Function
        End If
        ' controler la disponibilité
        If TE_UNITE.Value > pDispo Then
            MsgBox("Le nombre d'unité dépasse les places disponibles !", MsgBoxStyle.Critical)
            Exit Function
        End If
        ' effectuer les controles sur l'élève
        If ControlerEleves("EXA", TE_CD_CLI.Text) = False Then
            Exit Function
        End If

        ' si creation, controler si l'eleve n'a pas déjà une inscription encours 
        If pNoInscrit = 0 And IsEleve(CInt(TE_CD_CLI.Text)) Then
            szSQL = "CALL spGet_EXAMENS_AFF_byCD_CLI(" & TE_CD_CLI.Text & ")"
            GetRecordset(ctDSN_AEM, szSQL, rs)
            Do While Not rs.EOF
                If rs.Fields("resultat").Value = 0 Then
                    MsgBox("Cet élève est déjà inscrit à un examen du " & rs.Fields("date").Value & ", agence = " & rs.Fields("agence").Value, MsgBoxStyle.Critical)
                    rs.Close()
                    Exit Function
                End If
                rs.MoveNext()
            Loop
            rs.Close()
        End If

        ' effectuer les controles sur son examen
        If ControlesExamen("EXA", TE_CD_CLI.Text, pNo_exa, pDate, pAgence) = False Then
            Exit Function
        End If

        IsEleveOK = True

    End Function

    Private Sub InscritToScreen()

        ' creation ?
        If pNoInscrit = 0 Then
            TE_NO_INSC.Text = pNoInscrit
            TE_INDICE.Clear()
            TE_NOM.Clear()
            TE_CD_CLI.Clear()
            TE_UNITE.Value = 1
            CB_FILIERE.SelectedIndex = CB_FILIERE.FindString("NR")
            BO_RECHERCHER.Enabled = True
            If gUserAcces < 6 Then
                If pTypeExam = "2R" Then
                    BO_ENREGISTRER.Enabled = True
                    BO_SUPPRIMER.Enabled = True
                Else
                    BO_ENREGISTRER.Enabled = False
                    BO_SUPPRIMER.Enabled = False
                End If
            Else
                BO_ENREGISTRER.Enabled = True
                BO_SUPPRIMER.Enabled = True
            End If
        Else
            ' Lire l'enreg sélectionné
            szSQL = "CALL spGet_EXAMENS_AFF_byNO_INSC(" & pNoInscrit & ")"
            GetRecordset(ctDSN_AEM, szSQL, rs)
            If rs.RecordCount > 0 Then
                TE_CD_CLI.Text = rs.Fields("cd_cli").Value
                TE_NOM.Text = nv(rs.Fields("nom").Value)
                TE_NO_INSC.Text = rs.Fields("no_insc").Value
                TE_INDICE.Text = rs.Fields("indice").Value
                TE_UNITE.Value = rs.Fields("unite").Value
                TE_CD_MON.Text = nv(rs.Fields("cd_mon").Value)
                pDispo += TE_UNITE.Value
                chkPrevenu.Checked = rs.Fields("prevenu").Value
                CB_FILIERE.SelectedIndex = CB_FILIERE.FindString(rs.Fields("filiere").Value.ToString)
                TE_MODIFIE_LE.Text = setModifiedBy(rs.Fields("cree_le").Value, rs.Fields("modif_le").Value, rs.Fields("cd_uti").Value)
                If rs.Fields("valide").Value = False Then
                    BO_RECHERCHER.Enabled = True
                    If gUserAcces < 6 Then
                        If pTypeExam = "2R" Then
                            BO_ENREGISTRER.Enabled = True
                            BO_SUPPRIMER.Enabled = True
                        Else
                            BO_ENREGISTRER.Enabled = False
                            BO_SUPPRIMER.Enabled = False
                        End If
                    Else
                        BO_ENREGISTRER.Enabled = True
                        BO_SUPPRIMER.Enabled = True
                    End If
                Else
                    BO_ENREGISTRER.Enabled = False
                    BO_RECHERCHER.Enabled = False
                    BO_SUPPRIMER.Enabled = False
                End If
            End If
            rs.Close()
        End If

    End Sub

    Private Sub BO_RECHERCHER_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_RECHERCHER.Click

        ' si Elève provisoire, proposer le dernier code client consulté
        If TE_CD_CLI.TextLength > 0 Then
            gCD_CLI = TE_CD_CLI.Text
        End If
        frmElevesSearch.ShowDialog()

        ' Lire la fiche Elève
        TE_CD_CLI.Text = gCD_CLI
        szSQL = "CALL spGet_ELEVES_byCD_CLI(" & TE_CD_CLI.Text & ")"
        GetRecordset(ctDSN_AEM, szSQL, rs)
        If rs.RecordCount < 1 Then
            MsgBox("Elève " & TE_CD_CLI.Text & " non trouvé !", MsgBoxStyle.Critical)
            rs.Close()
            Exit Sub
        End If

        TE_NOM.Text = rs.Fields("nompren").Value
        TE_CD_MON.Text = nv(rs.Fields("cd_mon").Value)
        CB_FILIERE.SelectedIndex = CB_FILIERE.FindString(rs.Fields("filiere").Value)
        If pTypeExam = "ETG" Then
            TE_INDICE.Text = (rs.Fields("tr_t_nb").Value + 1) & "/0"
        Else
            If IsDate(rs.Fields("tr_p_ok").Value) = False Then
                TE_INDICE.Text = rs.Fields("tr_t_nb").Value & "/" & (rs.Fields("tr_p_nb").Value + 1)
            Else
                TE_INDICE.Text = rs.Fields("tr_t_nb").Value & "/" & (rs.Fields("tr_r_nb").Value + 1)
            End If
        End If
        If pTypeExam = "2R" Then
            If IsDate(rs.Fields("tr_p_OK").Value) Then
                TE_UNITE.Value = 2
            Else
                TE_UNITE.Value = 1
            End If
        End If
        rs.Close()

        If IsEleve(gCD_CLI) = False Then
            BO_ELEVE.Visible() = False
        Else
            BO_ELEVE.Visible() = True
        End If
        ' passe au champs suivant
        TE_INDICE.Focus()

    End Sub

    Private Sub BO_ELEVE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_ELEVE.Click
        ' affiche la fiche de l'éleve
        If TE_CD_CLI.TextLength Then
            gCD_CLI = TE_CD_CLI.Text
            frmElevesMAJ.ShowDialog()
        End If
    End Sub

    Private Sub BO_MONITEURS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_MONITEURS.Click
        ' utilisateur autorisé à modifier ?
        If IsUserAuthorised(6) = True Then
            'affiche la liste des Moniteurq pour sélection
            frmTablesSearch.pTable = "moniteurs_aff"
            frmTablesSearch.pTitre = "Sélectionner un MONITEUR"
            frmTablesSearch.pCode = TE_CD_MON.Text
            frmTablesSearch.pLibelle = ""
            frmTablesSearch.ShowDialog()
            If frmTablesSearch.pCode.Length Then
                TE_CD_MON.Text = frmTablesSearch.pCode
            End If
        End If
    End Sub

    Private Sub BO_ENREGISTRER_Click(sender As System.Object, e As System.EventArgs) Handles BO_ENREGISTRER.Click

        If IsEleveOK() = False Then
            TE_CD_CLI.Focus()
            Exit Sub
        End If
        ' controler le solde de l'élève
        If ControlerSolde("PREV", TE_CD_CLI.Text) = False Then
        End If
        ' mise à jour 
        szSQL = "CALL spUpd_EXAMENS_AFF(" & pNoInscrit & ",'" & Format(pDate, "yyyy/MM/dd") & "'," & pNo_exa & "," & pAgence & "," & TE_CD_CLI.Text & ",'" & nq(TE_NOM.Text) & "','" & TE_INDICE.Text & "'," & _
                TE_UNITE.Value & "," & CInt(chkPrevenu.Checked) & ",'" & pTypeExam & "','" & TE_CD_MON.Text & "','" & CB_FILIERE.SelectedItem & "','" & gUserCode & "')"
        If ExecQuery(ctDSN_AEM, szSQL) Then
            ' suppression dans l'élève dans les listes d'attente
            ExecQuery(ctDSN_AEM, "CALL spDel_ATTENTES ('" & TE_CD_CLI.Text & "')")
            Me.Close()
        End If

    End Sub

    Private Sub BO_SUPPRIMER_Click(sender As System.Object, e As System.EventArgs) Handles BO_SUPPRIMER.Click
        deleteEnregistrement("examens_aff", TE_NOM.Text, pNoInscrit)
        ' réaffiche la viewlist
        Me.Close()
    End Sub
End Class